NET_BUFFER_LIST processing
NET_BUFFER_LIST and vr_packet relationship

NET_BUFFER_LISTis a linked list of packet containersNET_BUFFERrepresents a single packetMDLlinked list represent a series of memory buffers- Windows API mostly accepts
NET_BUFFER_LISTstructures - vRouter expects
vr_packetto be a single network packet - Thus Windows vRouter code must assure that
vr_packetwill encapsulate:- single
NET_BUFFER_LIST - single
NET_BUFFER
- single
Receiving fragmented packets from container

Scenario: Packet is fragmented in container, before reaching vRouter
- Extension receives a single
NET_BUFFER_LISTwith a set ofNET_BUFFERstructures - Each
NET_BUFFERshould be in its ownNET_BUFFER_LISTto fulfill single network packet -vr_packetrelationship required by dp-core
Fragmenting egress tunneled packets

Scenario: Packet must be tunneled, but it's too big, thus must be fragmented by vRouter
- Windows API supports dividing packet into fragments
- Although it's vRouter responsibility to:
- Add fragmentation info to IP headers
- Fix packet headers (e.g. header checksums)
- Note: vRouter on Linux fragments the inner packet
- As a result each fragment is encapsulated separately
- vRouter on Windows implements the same behaviour